package main

import "math"

// 方法一 枚举法
//
//	func maxHeightOfTriangle(red int, blue int) int {
//		return max(maxHeight(red, blue), maxHeight(blue, red))
//	}
//
//	func maxHeight(x int, y int) int {
//		for i := 1; ; i++ {
//			if i%2 == 1 { //奇数行
//				x -= i //奇数行能放置的球还剩 x - i个
//				if x < 0 {
//					return i - 1
//				}
//			} else { //偶数行
//				y -= i //偶数行能放置的球还剩 y - i个
//				if y < 0 {
//					return i - 1
//				}
//			}
//		}
//	}
//
// 方法二 数学公式计算法
func maxHeightOfTriangle(red int, blue int) int {
	return max(maxHeight(red, blue), maxHeight(blue, red))
}

func maxHeight(x int, y int) int {
	odd := 2*int(math.Sqrt(float64(x))) - 1          //奇数行高度
	even := 2 * int((math.Sqrt(float64(4*y+1))-1)/2) //偶数行高度
	return min(odd, even) + 1
}
